package com.cplsys.iacna.utils;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.cplsys.iacna.domain.Bascula;
import com.cplsys.iacna.domain.Privilegio;
import com.cplsys.iacna.domain.Usuario;
import com.cplsys.iacna.services.BasculaService;
import com.cplsys.iacna.services.PrivilegiosService;
import com.cplsys.iacna.services.UsuarioService;

@Component
public class DefaultDBValues {
	@Autowired
	BasculaService basculaService;
	@Autowired
	PrivilegiosService privilegiosService;
	@Autowired
	UsuarioService usuarioService;

	public void init() {
		createBasculas();
		createUsuarios();
	}

	private void createBasculas() {
		List<Bascula> basculas = basculaService.getAll();
		if (basculas == null) {

			Bascula bascula = new Bascula();
			bascula.setDescripcion("Bascula 1");
			bascula.setNombre("1");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 2");
			bascula.setNombre("2");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 3");
			bascula.setNombre("3");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 4");
			bascula.setNombre("4");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 5");
			bascula.setNombre("5");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 6");
			bascula.setNombre("6");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 7");
			bascula.setNombre("7");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 8");
			bascula.setNombre("8");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);

			bascula = new Bascula();
			bascula.setDescripcion("Bascula 9");
			bascula.setNombre("9");
			bascula.setUnidadMedida("KG");
			basculaService.saveBascula(bascula);
		}

	}

	private void createUsuarios() {
		List<Usuario> usuarios = usuarioService.getAll();
		if (usuarios != null && usuarios.isEmpty()) {
			Usuario usuario = new Usuario();
			Privilegio privilegio = new Privilegio();

			usuario.setUserName("supervisor");
			usuario.setPassword("supervisor");
			usuarioService.saveUser(usuario);

			privilegio.setUsuario(usuario);
			privilegio.setProductionOperator(true);
			privilegiosService.save(privilegio);

			usuario = new Usuario();
			usuario.setUserName("admin");
			usuario.setPassword("admin");
			usuarioService.saveUser(usuario);

			privilegio = new Privilegio();
			privilegio.setUsuario(usuario);
			privilegio.setSuperUser(true);
			privilegiosService.save(privilegio);
			
			usuario = new Usuario();
			usuario.setUserName("operador");
			usuario.setPassword("operador");
			usuarioService.saveUser(usuario);
			
			privilegio = new Privilegio();
			privilegio.setUsuario(usuario);
			privilegio.setProductionOperator(true);
			privilegiosService.save(privilegio);
			
		}

	}
}
